プログラミングやRPG(作るほう)が好きな人の日記
このウェブページは毎日 夜11時にアクセスできなくなります。 朝6時半に再開されます。(世の中のネット依存対策として) 例外でアクセスができる場合があります。上のメニューの「aboutThisWebsite」を参照してください。 |
最近観ているアニメ:
日付 (上ほど新しい) | タイトル | 無料配信 (各話配信日) | 公評価 | 私評価 |
---|---|---|---|---|
2021/7/25~視聴中 | 機動戦士ガンダムSEED HDリマスター(リンクは Yahoo GYAO で検索) ロボットアニメ/2002年TBS系列/各話25分程度 ファーストガンダムを彷彿とさせる物語展開+エヴァンゲリオンという感じの内容。 |
月火水木金土日 | ★★★☆☆ 3.6 |
★★★☆☆ 3.8 |
2021/7/15~視聴中 | ドラゴンボール(リンクは Yahoo GYAO で検索) 冒険・格闘技/1984年週刊少年ジャンプ/各話25分程度 |
月・水・金・・ | ★★★★☆ 4.8 |
★★★★☆ 4.5 |
2021/5/18~視聴中 | はじめの一歩(リンクは Yahoo GYAO で検索) ボクシング/1989年週刊少年マガジン/各話25分程度 大人になってわかる、ドラゴンボールを上回る面白さ。スケベ表現がたまにあるので男性向け? |
月・水・・土・ | ★★★★☆ 4.5 |
★★★★★ 5 |
最近観た映画:
日付 (上ほど新しい) | タイトル | 無料配信 (日付まで) | 公評価 | 私評価 |
---|---|---|---|---|
2021/8/6 | ターミネーター4 【吹替版】(リンクは Yahoo GYAO で検索) SFアクション/2009年アメリカ/01:54:49/(シュワいない) |
2021年8月7日(土) 23:59 | ★★★☆☆ 3.8 |
★★★☆☆ 3.2 |
2021/7/30 | インストール(リンクは Yahoo GYAO で検索) ドラマPG12/2004年日本/01:34:31/上戸彩 上戸彩が本当の女子高生みたいに見えたから★4(でも当時二十歳くらいだからそう見えて当然か??) |
2021年8月10日(火) 23:59 | ★★☆☆☆ 2.2 |
★★★★☆ 4 |
2021/7/15 | ラスト・ターゲット(リンクは Yahoo GYAO で検索) サスペンス/2010年アメリカ/01:44:47/ジョージ・クルーニー 観る人を選ぶ物静かな映画。 |
2021年8月7日(土) 23:59 | ★★★☆☆ 3.7 |
★★★★☆ 4 |
最近買ったもの:
日付 (上ほど新しい) |
タイトル | 公評価 | 私評価 |
---|---|---|---|
2021/8/7 | 曲:アンインストール(リンクは Apple Music の当該ページへ)
2007年の「ぼくらの」というロボットアニメの主題歌
歌詞を読みましたが、「突然現れた新しい現実に対し、受け入れ、やるっきゃない」と言っているのかなぁ… |
★★★★★ 5 |
★★★★☆ 4 |
2021/7/9 | ゲーム:ザ・トリロジーズ -T&E SOFT / XTAL SOFT COLLECTION-(リンクは EGG の当該ページへ)
PCレトロゲームのセット。RPG開発の研究のために予約で購入。発売日は未定だそうです。 |
発売前 | 発売前 |
2021/5/29 | 曲:最強○×計画(リンクは Apple Music の当該ページへ) 2006年の「すもももももも 地上最強のヨメ」というアニメの主題歌 |
★★★★☆ 4.5 |
★★★★☆ 4 |
2021/5/15 | プラモ:MG スーパーガンダム(ver1.0)(リンクは Amazon 同商品ページへ) 1998年発売のガンプラです。街の小さなおもちゃ屋さんで売れ残っていたのを買いました。
|
★★★★☆ 4.1 |
作り途中です |
日記:
私が最近進めている「全体的・基本・簡潔のRPG」のプログラムのための、「エフェクト」についての試作プログラムです。
▼エフェクト「雨」 |
▼エフェクト「回転」+「拡大縮小」 |
ここをクリックすると新しいウィンドウを開いて JavaScript を実行します。
キーボードが必要です。タッチデバイスには対応していません。
↑ ↓ ← → で画面中央の青い○を動かし、赤い□が描かれた部分に乗ると、エフェクトが発動します。
用意しているエフェクトは、「拡大縮小」、「雨」、「回転」、「振動」、「フラッシュ」、「フェードアウト」の6点です。
複数のエフェクトを組み合わせて同時に動かすこともできます。雨を降らせながら画面を振動させればムード満点です。
(一番下の赤い□で雨を降らせた後、一番上の赤い□に乗る)
ここをクリックすると新しいウィンドウを開いてプログラムリストを表示します。
この試作プログラムは .html ファイル単体で動作しています。
プログラム中の remaining(リメイニング)という英単語は「残り」という意味です。
プログラム中の story という単語は、RPG の開発でよく使われる「イベントスクリプト」のことです。
JavaScript を使用しています。以下について理解していないと難しい内容となっています。(以下5項目)
<SCRIPT>
alert( "Hello World !" );
</SCRIPT>
これを、オブジェクト指向(class)を使って書くと以下のようになります。<SCRIPT>
class Test {
constructor() {
alert( "Hello World !" );
}
}
test = new Test();
</SCRIPT>
上の書き方で慣れている人にとっては、下の書き方は「面倒な書き方」に見えたり、「上の書き方で満足しているのでわざわざ下の書き方に変更する必要はない」と感じるのではと思います。async function story() {
alert( "Hello" );
await new Promise( function( sigotoOk ) {
setTimeout( sigotoOk, 3000 );
} );
alert( "World !" );
}
・await を使うことで、その関数をその場所で一時停止できます。async function story() {
alert( "hello" );
await effect1();
alert( "world !" );
}
function effect1() {
return new Promise( function( sigotoOk ) {
setTimeout( sigotoOk, 3000 );
} );
}
Promise, async, await は結構奥が深くてすべてを理解するのは難しいですが、このエフェクト試作品プログラムを理解するだけなら これだけ知っておいてもらえれば大丈夫です。class Test {
constructor() {
setTimeout( function() {
alert( this.constructor.name ); //'Window'
}, 1000 );
setTimeout( function() {
alert( this.constructor.name ); //'Test'
}.bind( this ), 2000 );
}
}
function test() {
console.log( "Hello World !" );
setTimeout( test, 1000 );
}
test();
requestAnimationFrame() で同じことをやろうとすると、以下のように自分で時間間隔(経過時間)を調べる必要があります。beforeTime = 0;
function test( timestamp ) {
if( timestamp - beforeTime >= 1000 ) {
console.log( "Hello World !" );
beforeTime = timestamp;
}
requestAnimationFrame( test );
}
test();
requestAnimationFrame() を使うメリットはそれがアニメーションのために用意された関数であって、見た目の動きがスムーズに感じられます。まるでファミコンみたいに安定感のある動きになります。function draw( cc ) { //ccは「CANVASコンテキスト」
cc.save();
cc.translate( 100, 100 ); //描画の原点をその位置へ移動できます。
cc.rotate( 3.14 / 4 ); //以後原点を中心に45度回転して描画
cc.fillStyle = "lightblue";
cc.fillRect( 0, 0, 150, 100 );
cc.restore(); //原点は元に戻ります。(回転も戻ります)
cc.fillStyle = "red"; //原点を示す
cc.fillRect( 100, 100, 8, 8 );
}
save() と restore() をやらないと、たとえば描画のたびに translate( 10, 10 ) を繰り返した際、2回目の描画で 20, 20 が原点、3回目の描画で 30, 30 が原点になってしまいます。以後どんどん原点が右下へ移動していきます。そのような使い方は通常はやらないので、基本的に translate() や rotate() 等、画面をいじるメソッドを行う前後には save(), restore() を入れるようにします。以上の5項目が、この試作プログラムを理解するための前提条件となっています。
そのほか、個人的な手法として以下のようなしくみを導入しています。
function onloadx() {
//キャラの設定を行い、setIntervalを呼び出すだけのプログラムです。
sprites = {
jiki : {
images : [ "▲", "△" ],
timing : 1000, //jikiのタイミングは他と異なるが、
nowTime : 0,
x : 100, y : 200,
},
pow : {
images : [ "★", "☆" ],
timing : 100, //powとtekiはタイミングが同じ
nowTime : 0,
x : 150, y : 150,
},
teki : {
images : [ "-", "■" ],
timing : 100, //powとtekiはタイミングが同じ
nowTime : 0,
x : 100, y : 100,
},
};
setInterval( function() {
let cc = document.getElementById( "test" ).getContext( "2d" );
cc.font = "32px''";
cc.clearRect( 0, 0, cc.canvas.width, cc.canvas.height );
for( let name in sprites ) {
let sprite = sprites[ name ];
sprite.nowTime += 100; //キャラごとに管理&処理
if( sprite.nowTime >= sprite.timing ) { //キャラごとに管理&処理
sprite.nowTime = 0; //キャラごとに管理&処理
sprite.images = sprite.images.reverse();
}
cc.fillText( sprite.images[ 0 ], sprite.x, sprite.y );
}
}, 100 );
}
function onloadx() {
//メトロノームとキャラの設定を行い、setIntervalを呼び出すだけのプログラムです。
metronomes = [
{
timing : 1000, //jikiその他が使うメトロノーム
nowTime : 0,
changed : false,
},
{
timing : 100, //pow,tekiその他が使うメトロノーム
nowTime : 0,
changed : false,
},
];
sprites = {
jiki : {
images : [ "▲", "△" ],
metronome : metronomes[ 0 ], //そのメトロノームを指定
x : 100, y : 200,
},
pow : {
images : [ "★", "☆" ],
metronome : metronomes[ 1 ], //そのメトロノームを指定
x : 150, y : 150,
},
teki : {
images : [ "-", "■" ],
metronome : metronomes[ 1 ], //そのメトロノームを指定(powと共通)
x : 100, y : 100,
},
};
setInterval( function() {
//メトロノーム更新
for( let metronome of metronomes ) {
metronome.nowTime += 100;
if( metronome.nowTime >= metronome.timing ) {
metronome.nowTime = 0;
metronome.changed = true;
} else {
metronome.changed = false;
}
}
let cc = document.getElementById( "test" ).getContext( "2d" );
cc.font = "32px''";
cc.clearRect( 0, 0, cc.canvas.width, cc.canvas.height );
for( let name in sprites ) {
let sprite = sprites[ name ];
if( sprite.metronome.changed ) { //メトロノームがタイミングをシンプルに教えてくれる
sprite.images = sprite.images.reverse();
}
cc.fillText( sprite.images[ 0 ], sprite.x, sprite.y );
}
}, 100 );
}
それから、プログラム中に afterEffects という名前の配列が出てきますが、Adobe の「After Effects」というソフトウェアの名前を持ってきて遊んでいます。関数名に tai(), aji(), saba() といった命名をするのは情報系の学生でもやっていることなので、恥ずかしがらずに思い思いにやると良いでしょう。私が最近やったのは、
このエフェクト試作は汎用的にプログラムしているので、マップ全体に限らず、キャラクター1体単位など、「描画個体」に対して効果が出るようになっています。たとえば「振動」エフェクトは、マップ全体に対して行えば「地震」に見えるし、キャラクター1体に対して行えば「身震い」しているように見えます。
this.effectz.quake( this, 2, 50, nowMs + 4000 ); //マップ全体に対して
this.effectz.quake( this.player, 2, 50, Date.now() + 800 ); //キャラクター1体に対して
赤い部分を変えることでエフェクト対象が変わります。
afterEffects と beforeEffects の二手に分かれているのは、エフェクトの内容が「描画前に実行したい命令」と「描画後に実行したい命令」とで分かれているためです。
たとえば、「振動」エフェクトは画面全体をゆらしますがこれは描画位置を小刻みに左右に変更して実現しています。これは描画の前提条件を変えるもの( translate() )なので beforeEffects に入れます。「雨」エフェクトは描画後に上から雨粒を描きたいので afterEffects に入れます。
複数のエフェクトを組み合わせて同時に動かす際、「あるエフェクトを何秒間」と計画通りにプログラムが動いてくれないと「同時に終わるはずなのに、あるエフェクトが少し遅れて終了する」という結果になってしまいます。計画通りに動かすために、エフェクトの終了判定に Date.now() という現在時刻のメソッドを使っています。
現在時刻 >= エフェクトの終了時刻
この条件が成立したらエフェクトが終了する。というプログラムになっています。(quake, flash)
地震(quake)やフラッシュ(flash)はガタガタガタ、シパシパシパと一定時間繰り返せばよく、終わりの状態は特に決まっていないので、この方法でいいのですが、回転や拡大縮小、フェードアウトは、終了時には、回転は360度まで回転していなければならないし、拡大縮小は指定の拡大率になっていなければならないし、フェードアウトはちゃんと真っ暗で終わらなければなりません。上記の時間の条件で終わらせようとすると回転の途中で終わる、という結果になってしまいます。実際にそうなって悩みました。
その解決として、アニメのパラパラの1回において、その1回で動かす量を、「(終わりの状態までの)残りの動作量を残りの描画回数(パラパラ回数)で割る。それをstep(その回の動作量)とする」という計算で決めています。(zoom, rotate, fadeout)
そうすることで、指定時間に合わせるためにどれくらい動かす というのを毎回計算しなおすので、毎回時間的なずれが修正されて、ピタッと指定時間に終了できます。
このおかげで、複数のエフェクトを組み合わせて動かすことができ、表現力豊かなエフェクトになるわけですが、その代わり難しい内容となってしまいました。
「全体的・基本・簡潔のRPG」のプログラムを目指していますが、この試作プログラムはまだまだ難しいところだと思います。
quake や rotate など複数あるエフェクト関数を、単なる関数の配列にするのか、ゲームのプログラムのメソッドとして普通に並べるのか、クラスにまとめるのか、と考えて、クラスを選びました。
そして、静的(クラスメソッド)で良いと思ったので各メソッドは static にしていましたが、各メソッドでゲーム本体(app)を参照する必要が出てきたので static を外して、new Effectz( app ) とするようにしました。
単なる関数の配列だと、それがちゃんと動くのかどうか不安になったとき、本番プログラムの中でテストをしなければならなくなり、それが難しさにつながりそうだと思いました。ゲームプログラムのメソッドとして普通に並べるというのも同じです。取り回しが悪いと言うのかなぁ。そうやって組み込んでしまうと身動きが取れないかんじがします。
別のクラスにすれば、テスト用のプログラムを組んでそのまま試すことができると思います。
(訪問者のどんなニーズと この記事がつながるか)
古いパソコン(レトロPC)の PC-9801 UV を買おうか買うまいか悩んでいます。
← PC-9801 UV21価格は、
◎ 98ハードの本を買って、、
◎ 前々から気になっていた。
私は中学三年生のころに PC-9801 RX21 を私のわがままで父に買ってもらいましたが、そのことについて今現在後悔していて、その後悔について取り返したいと思っています。
”本来あるべきものがこれだった” という思いで UV を ながめていたい。
※どういうことかというと、当時 PC-9801 を買うときに、父のすすめでは、父の会社の生協の UV21/11 だったが、私は「それでは性能がダメだ」と言って、「RX21 が良い」と、ずっと高価なものを望んで、買わせてしまった。
それが今思えば、高価すぎで、わがままだった。「特別な情報系の学校に進学するので、、」という投資の意味も、父にはあったと思うけど。。
当時の私にはわかりませんでしたが、UV21/11 という機種は、
というように、良いところがあります。なので、父のすすめを聞いたほうが、いろいろ良かったと思います。
ちなみに私が目をつけているオークションの品物は、UV21 ではなく 性能の低い UV2 ですが、ちょっと性能が低いくらいならいいかなと思っています。
× 荷物になる
本体だけではなく、周辺機器、本もある
× 出費になる
後から周辺機器を購入する
後から本を購入する
× 非生産的活動による不健康(生産的活動による不健康なら いいわけが立つけど)
古いパソコンについて活動することは、現在の世の中(一般的なところ)のニーズではない。
(一部のおたくっぽいホビーではニーズが高いけど)
× オークションで買った場合、粗大ごみになる確率がやや高め
オークションの、私がこれだと思っている出品内容を見ると、ちゃんと使えるように整備したと書かれていて、一見良さそうに思えるんだけど、ほかのプロでやっている通販サイトの品物と比べてみると、やはり、どこまで大丈夫なのかが不透明で、ちょっと「賭け」みたいなところがある。
しかもその出品内容をよく見ると疑問点が2つ
そのため、この出品は利用できません。
2021年8月23日 追記:RAM 640KB の正体がわかったので、また買おうかと迷い始めました…
買うことのプラス面とマイナス面の両極に、いちじるしく分かれているから悩むんです。
買う場合は、マイナス面を見越して買うことになります。
そんなことをこの1週間ぐらい考えていました。
今現在は買わない方向に傾いています。。頼みの綱(読み:つな)のオークションの出品内容がダメなので。
2021年8月23日 追記:RAM 640KB の正体がわかったので、また買おうかと迷い始めました…
(訪問者のどんなニーズと この記事がつながるか)
私が趣味で作成している「RPG の試作品」を紹介します。
このお盆休みで、ずっと取り組んでいました。
画像リンクをクリックすると、新しいウィンドウで JavaScript を実行します。
2023年5月7日追記:長い間動作不良を起こしていましたが、今日気づいて直しました。
著作権はフリーです。プログラムリストの一部の内容をコピーしたり、または全体をコピーして使ってもらっても大丈夫です。
(試作品なので、ほとんど使い物にはならないとは思いますが…)
お手元で動かすためのファイル一式(RPG_20210817.zip [11.9MB] )
全体的、基本、簡潔、と言っても、現状、複雑になっています。
全国の小中高生で「RPG を自分でプログラムしたいけど、ちょっとやり方がわからない、難しい」という人のために、参考になるようなプログラムを目指しています。そのためには現状難しいところをもっと簡潔にしていく必要があります。それが私の課題です。
また、「自分で考えて作るほうが何倍も楽しい!」というのが人の気持ちの基本だと思うので、私の課題の「見本を示す」というのは、一歩間違えば、相反する内容になります。自分で考えたいところを「これだよ」と言ってしまうので。。その辺をどう調整していくかも、大きな課題です。(最低限の骨組みを示すだけに とどめればいいのかな…)
自作 RPG が自然とドラクエに似てしまう問題があるんです。
すでにけっこう…、というかほとんどクリソツ、ドラクエそのものです。
そのままだと、「パクリ」だって叩かれてしまいます。
「少年ジャンプがどうしても伝えたい、マンガの描き方」(集英社刊、900円)
最近コンビニの本コーナーに並んでいたと思います。
私は漫画家になりたいとは思っていませんが、RPG 開発やホームページ編集をするうえで、いろいろ参考になりそうなことが書いてあると思ってこの本を買いました。
で、さっそく自分自身のパクリの問題の解決策をこの本からいくつか見つけました。
そこに書かれていたことで、「影響元が一つだから気になってしまうんです。たくさん取り入れたらオリジナルになりますよ」とありました。
たしかに私の RPG の影響元は「ドラクエ」1つで、だからこそ似てしまって気になってしまうってことですね。
ドラクエ以外に好きなものはないのか?と思って挙げてみたら、
が出てきました。でもすぐにこの2つから影響を 意図的に出すのは難しいので、、
とりあえず、このスライム(左)をなんとかしようと思いました。
→ → → |
水色のプニプニ物体はだいたいドラクエのスライムを連想させるので、色を変えることにしました。
青 → ドラクエのスライムだ
赤 → ドラクエのスライムベスだ
緑 → 緑色の透き通ったスライムはいくつかのゲームで登場していて、同じだと面白くない。
桃 → 桃色(ピンク)なら、雑魚キャラとしては珍しいんじゃないか、と思って、思い切ってピンクにしました。
この「モモスラ」は、新しいほうの「ぷよぷよ」に似てる!と気づきましたが、「ぷよぷよ」のほうは口がありません。だからセーフ。(上の図で口をなくすとぷよぷよになっちゃいます)
このデザインのスライム は他の何かのゲームですでに登場しているかもしれませんが、私はとりあえずそれを知らないので、この「モモスラ」で行こうと思います。
ちなみにコマンドウィンドウの下地が「白」なのも、ドラクエとの差別化のためです。
影響元に似ることについては、「別のものを混ぜて ぼやかす努力が必要」なんじゃないかなと思います。
(訪問者のどんなニーズと この記事がつながるか)
昔の趣味の再燃だ☆
前々から個人的に PC-9801 というハードウェア(1980年頃のパソコン)について、高校生の頃によくプログラミングしていた経験があるせいか、気になっていました。
(PC-9801 リンクは Wikipedia)
今日も何気なく「PC-9801 ライブラリ」というキーワードで情報検索していました。
(「ライブラリ」とはC言語などのライブラリのことで、私の目的は画面に何かを描く「グラフィクス・ライブラリ」です。画面に高速に何かを描けると楽しいので。)
その情報検索でこんな本を見つけました。今から33年前に発売された古文書(こもんじょ)です。
「98ハードに強くなる本II」(1988年 技術評論社)
なぜか無料で全ページを読める状態になっていて、「著者が気を利かせて広く一般に公開しているのかな」と思って、喜んで読んでみました。
読み始めると、すごい勢いで読み進め、スポンジが水を吸収するように内容を吸収する自分を発見しました。
そんなに 98 の情報が欲しかったのか…。
でもちょっと躊躇します。
きっと、「PC-98エミュレーター」やフリーのアセンブラの「NASM」(リンクは Wikipedia)を使えば、私はこの先1年は遊んでいられると思います。
でも『今さら PC-9801 のハードウェアに詳しくなって何になるのか。。』という思いも当然あります。
なぜなら、国民機「PC-9801」の時代は 20 年以上前に終わっていて、今後新しい機種が出るはずもなく、企業の PC として採用されるわけはなく、使うと言ったら遊び(ホビー)で使うくらいでしょう。
98 について取り組んでも無駄に時間を過ごす気がします。
←当時、国民機と呼ばれていたパソコン PC-9801。(画像はホントはPC-88)
でも考えてみれば、意味はあります。
「PC-9801」という具体的な物として見るとあまり意味はないかもしれませんが、「コンピューター/ハードウェア」という大きなカテゴリとして見ると世の中にそのニーズはありそうです。
コンピューターや電子回路などハードウェアは今(昔もそうでしたが)、さかんに開発されていますよね。
ソフトウェアなどプログラミングの世界でもハードウェア的なことをある程度知っていたほうが、プログラミングの勘がさえることもあります。
それについて本から少し引用すると、、
と、まぁ、こんな感じで、今の時代のコンピューター/ハードウェアに通じる知識を学べそうです。
←家電に組み込まれたコンピューターについて BIOS とか LSI の知識を使う…かな?
ところで、上記の、
「なぜか無料で全ページを読める状態になっていて…」
となっていたことについて調べたところ、
著者が自分の意志で公開しているというものではなく、ある組織か 人物かが、出版社に無断で公開しているというもので、しっかり問題になっていました。
キーワード「archive.org 著作権」を Bing で検索
いろいろなところでニュース記事になっています。
この行為は営利目的ではないので「海賊版」にはあたらないそうです。これを行っている本人は、
「コロナウイルスで図書館が使えないので、人々のために代わりの図書館をネットワーク上に開設した。図書館と同じだ」
と主張しているそうですが、普通に考えて無茶だなと思います。
図書館は税金とかで運営されているんじゃなかったっけ、、、税金を払っている人たちが無料で借りているという形(無料に見えて実はお金を払っている)なんだよなぁ、、
図書館は公共の施設として認知されているから、出版社も「その場所に数冊置くくらいだったら利益に問題は出ない」と考えてその上で「無料で OK」としているんじゃないかな。
だから、公共として認知されていない組織がネットワークを使って本を無料で読める状態にしてしまうと、出版社たちが YES と言うわけはないでしょう。
…そんなわけで、せっかくの本はネットワーク上では読む気になれず、通販で探しました。
アマゾンでは中古で 5000円。高めで難しい。 楽天には無し。
その他の通販を探して、中古を 980 円で購入できました。安くて良かった。
本が届いたら始めるんだろうか……98を…?
98を~~~~!
8月12日(木)に通販が届きました。
ほしいなと思ってから(九州の長崎のお店から茨城まで)わずか2日で届くなんてすごいな。
自分はそこまで してもらうほど偉くはないって思ってしまう。
(訪問者のどんなニーズと この記事がつながるか)
コマンド入力システムはだいたいできあがり、現在は戦闘システムを作っています。
プログラムの内容を基本的、簡潔にしぼり、プログラミングする内容はシンプルになると思いきや、あれこれいろいろと作る必要があることに気づき、RPG ってそう簡単に作れるものではないんだなと痛感しています。
厳しい中でこそ何かが生まれるどこか くどいストーリー展開は必要としないかも? 面白いならいいけど、はんぱ な物語なら いらない。
提出した物語10個を上司(編集者)が10個ともボツにするような中で――― ――10個ともボツにするような中でくぐり抜けてきた物語をプレイヤーたちは面白いと言う。
それが本当だとすれば、私にはそういう上司がいないから、 私が作る物語はプレイヤーたちにとっては、つまらないもの と言ってよいでしょう。 でも誰でも「自分の物語を描いてみたい」と挑戦したいところもあると思います。
そういう気持ちは人の気持ちについても自分の気持ちについても大切にしたいと思います。 |
制作のガイド2点▼プレイヤーはゲームソフトに対し 5000 円を支払っている。 そこを考えながら作ると、少し変わってくる。 「5000円を支払っている」というのは
昔のファミコンソフトの価格相場をもとにしています。 「プレイヤーはこれを5000円で買う」と思うと、急にどこを調整したほうが良い、という思いがわいて、チープなゲームソフトは説得力のあるゲームソフトへ修正されていきます。あなたが何か、人向けに作っているなら、試しにそう考えてみてはどうでしょうか。(ガイド1)
なお、上図のモンスターはこちらを不敵に にらむよう心掛けました。 そうすることでプレイヤーたちのやる気をくすぐるのではと思います。(ガイド2) |
どこまでが基本的、簡潔で、どこからが基本的、簡潔を超える部分(マイナー)なのかを判断するのも難しいです。
RPG の基本的なプログラムを示したいので、マイナーな記述(一般的ではないプログラム)は避けなければなりません。
そうかと言って、基本的、簡潔をめざしすぎて、あまりカッコ良くない残念なシステムを作ってもつまらないでしょう。(上図で言うと散切り頭のこと)
たとえば、戦闘システムでは、モンスターが無作為にキャラを選んでただ攻撃してくるというだけでは、変化がなくてつまらないです。
そうではなく、モンスターたちが一人の弱そうなプレイヤーキャラクター、一人のキーパーソンのプレイヤーキャラクターに対し、集中攻撃をしてくるとか、モンスターたちが自分たちを適切に回復するとか、そういう複雑な動きをすれば、戦略を練る必要が出てきて、それが一進一退の攻防になり、ゲームとしての面白さにつながります。
上の私の自作 RPG のスクリーンショット2点は2つとも、今どきのゲームに比べればずいぶんと残念な様子に見えると思いますが、プログラムのほうは基本的、簡潔にしつつも拡張性のある(今どきのゲームに通じる華やかな演出が可能な)プログラムを心掛けているので、たぶん、大丈夫です。
※RPG の基本的なプログラムは問題にしていなくて、1つの作品を作りたいということならこの話はあまり関係がありません。
たぶん、30代、40代、50代の方々は、見た目の華やかさよりも、「内容は本当に面白いのか」という部分を見ると思います。
たとえば、ファミコン版ドラクエ3のバラモス城のエビルマージ4人組は緑色の覆面の適当な姿のやつらですが、倒すか倒されるかの瀬戸際になるので内容的に面白いです。
それに対して、10代、20代の方々は、「見た目がダメなら、ダメで面白くない」と言うんじゃないかなぁと思います。(私の偏見ですかね?)
強敵のエビルマージ4人組↓今の時代に若者向けにこの画面でゲームを提供するとは考えにくい。
ガンダムにしても、ファーストガンダムで多大な喜びを味わった30代、40代、50代は「RX-78 ガンダム」のあのシンプルなデザインが「良い」と言いますが、今どきの10代、20代の若者たちは、それよりも「フリーダムガンダム」とか「ダブルオー・クアンタ」など、イケイケなガンダムを好んでいるようです。
世代ごとに何が面白いのかという価値観が異なっていて、30代、40代、50代が面白いと思っているものは、かならずしも若者が面白いと思うとは限らないと思います。
もうちょっと上の世代を見ると、60代、70代、80代の方々が体験した「チャンバラ」や「野山を駆け回って遊ぶ」という遊びは、30代、40代、50代の方々にとっては
「わかるけど、どちらかというと ファミコン のほうが面白いよ」
と言うと思います。私も当時はファミコンに夢中でしたから。最初に何を味わってきたのか、が価値観の違いに大きく影響するのではと思います。
そして、今どきの10代、20代の方々は、私の自作の RPG やエビルマージ4人組の画面を見て
「わかるけど、どちらかというと 見た目が華やかで派手 なほうが面白いよ」
と言うのではないでしょうか。魅力的な女の子がいっぱい出てきて華やかで、超豪華な画面エフェクトの数々に夢中なのでは??生まれたときに周りにそういうゲームがあふれていたと思います。
世代交代で同じことを繰り返していて(歴史は繰り返す)、それぞれで異なる価値観を持っています。
ゲーム開発のターゲットは現状、2世代(10代、20代の方々と、30代、40代、50代の方々がゲームで遊ぶ状態)であり、華やかなだけではダメだし(30代、40代、50代がNo)、単に内容が面白いというだけでもダメ(若者がNo)なので、私が重視している「内容の面白さ」(30代、40代、50代向け)のほかに、華やかな演出の道(10代、20代向け)も確保しつつプログラムすることにしています。そういう意味でも基本的、簡潔を目指すだけではなく、ある程度拡張性を準備する必要があります。
また、余談ですが、登場する女の子についても私は「戦いなのだから全員ズボン着用だ!そこに魅力がある!」なんて現代の若者たちの趣味から外れたことを考えていますが、それもほどほどが良いのかもしれません。
ブルマ「ちょっとぐらいなら触ってもいいのよ」 (ほどほどにして露出しましょう)
悟空「オラ、きたねぇケツなんか触りたくねぇ」 (いや、戦いなんだから全員ズボン着用だ!)
7/28(金)の夕方に勤め先企業の計画で1回目のワクチン接種を受けました。(職域接種)
接種会場は待ち行列になっていて40分ほど待ち、接種を受けた後、15分待機させられました。
特に症状が出なかったので、そのまま帰宅しました。
翌日土曜日に、接種した部位の左肩が打撲したみたいに痛みはじめ、風邪みたいな身体の具合の悪さと、咳がありました。
日曜日が症状のピークでしたが、午後くらいから下り坂になっているのを感じました。
ただし、休み明けの月曜日~木曜日まで、ずっと咳が続いていました。
今も咳が軽く残っています。
職場の他の方々も、ある人は肩が上がらない、ある人は職場に来たけど具合が悪い、ある人は38.5℃、ある人は39℃以上の高熱で休み、ある人は様子見で接種せず、という感じでした。
2回目の接種は8/27を予定しています。
私が接種したのはモデルナのワクチンで、ニュースによると、3回目の接種が必要とか言っていますね。
今現在、日本全国では感染者数の最高記録を更新中ですよね。東京都で1日5000人以上、全国で1日1万5000人以上。
そのため、今日予定していた歯医者の受診はキャンセルしておきました。(私は茨城県ですが、茨城県も最高記録更新中)
どこかに出かけるときは目的を単一にしぼって、「ついでに」という行動は取らないようにしています。
目的を複数にするとそれだけ感染のリスクは高まるし、感染した際にどこで感染したのか追うことも難しくなると思って。
私は一人暮らしで、友達が少なく、飲食に誘われることはほとんどないので、冷たく断る/用心しながら誘いに乗る、というようなことはなく、これを読んでいる皆さんとは立場が少し異なるのかなと思います。
(訪問者のどんなニーズと この記事がつながるか)
以降は自己啓発的な内容です。
この表は、このウェブページの管理人のパソコンの使用時間を管理・制限するためのものです。
No. | A1. 開始時 運動 |
A2. 勉強 1問 |
A3. 終了時 運動 |
H1. 予定 作業内容 |
H2. 予定 作業詳細(進捗%) 判定×の理由 | B. 実際 開始時刻 |
C. 予定 使用時間 (当日限度) |
D. 予定 終了時刻 |
E. 実際 終了時刻 |
F. 実際 使用時間 |
G. 判定 ◎ 9分以下 ○ 10分~19分 △ 20分~29分 × 30分以上 |
---|---|---|---|---|---|---|---|---|---|---|---|
予定 | 記事をカテゴリ分けする | カテゴリをさらに大きな大カテゴリで分ける | |||||||||
予定 | 記事をカテゴリ分けする | 各記事の日付を表示 | |||||||||
予定 | 3Dお姉さんプログラム説明 | 座標を持った2つの要素について片方がもう片方を追尾し続ける試作(この表のNo. 380の問題を受け) | |||||||||
403 | 全体的・基本・簡潔のRPG | 全体の基本の動き(骨組み)を再度試作 もし時間内に終わらない場合は:あきらめる | 21:35 | 1:30(4:00) | 23:00 | 23:06 | 1:36 | ◎ | |||
462 | 全体的・基本・簡潔のRPG | 全体の基本の動き(骨組み)を再度試作 (なんか、プログラムを見ているとごちゃごちゃとしていて、どうなっているのか、わからないから) もし時間内に終わらない場合は:あきらめる | 17:20 | 2:30(4:00) | 19:50 | 20:13 | 2:53 | △ | |||
461 | 全体的・基本・簡潔のRPG | エフェクト試作を適用(80%) もし時間内に終わらない場合は:あきらめる | 21:30 | 1:30(1:30) | 23:00 | 23:08 | 1:38 | ◎ | |||
460 | 全体的・基本・簡潔のRPG | エフェクト試作を適用(70%) もし時間内に終わらない場合は:あきらめる | 23:20 | 1:00(1:00) | 24:20 | 24:29 | 1:09 | ◎ | |||
459 | 全体的・基本・簡潔のRPG | エフェクト試作 もし時間内に終わらない場合は:あきらめる 整理できていないまま進もうとしたから、こんぐらがった。。 | 21:25 | 1:30(1:30) | 22:55 | 23:30 | 2:05 | × | |||
458 | 全体的・基本・簡潔のRPG | エフェクト試作 もし時間内に終わらない場合は:あきらめる うまくいかなかった | 21:50 | 1:30(1:30) | 23:20 | 23:45 | 2:05 | × | |||
457 | 全体的・基本・簡潔のRPG | エフェクト試作 もし時間内に終わらない場合は:あきらめる | 21:50 | 1:30(3:00) | 23:20 | 23:43 | 1:53 | △ | |||
456 | × | 全体的・基本・簡潔のRPG | エフェクト試作 もし時間内に終わらない場合は:あきらめる | 14:20 | 1:30(3:00) | 15:50 | 16:03 | 1:43 | ○ | ||
455 | 全体的・基本・簡潔のRPG | エフェクト試作 もし時間内に終わらない場合は:あきらめる デバッグできず | 20:50 | 2:00(2:00) | 22:50 | 23:39 | 2:49 | × | |||
454 | 全体的・基本・簡潔のRPG | エフェクト試作 もし時間内に終わらない場合は:あきらめる | 21:10 | 1:30(1:30) | 22:40 | 22:53 | 1:43 | ○ | |||
453 | 全体的・基本・簡潔のRPG | エフェクト試作 もし時間内に終わらない場合は:あきらめる | 17:50 | 2:00(2:00) | 19:50 | 20:09 | 2:19 | ○ | |||
452 | × | 全体的・基本・簡潔のRPG | 整頓 もし時間内に終わらない場合は:あきらめる | 22:55 | ほどほどに。 | UNLOCK | 26:51 | どこが ほどほど や~ |
UNLOCK | ||
451 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる (UNLOCKとはいえ7時間はちょっとやりすぎた) | 14:10 | UNLOCK | UNLOCK | 21:25 | 7:15 | UNLOCK | |||
450 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 23:25 | 1:30(4:00) | 24:55 | 25:16 | 1:51 | △ | |||
ちょっと作業: 98エミュレーターでC言語プログラムをコンパイルする環境を作っていた。1.5hくらい。その方法をまとめたメモ→● | |||||||||||
449 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 16:10 | 2:00(4:00) | 18:10 | 18:16 | 2:06 | ◎ | |||
448 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 23:20 | 1:30(4:00) | 24:50 | 1:04 | 1:44 | ○ | |||
447 | × | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 16:00 | 2:00(4:00) | 18:00 | 17:32 | 1:32 | ◎ | ||
446 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 20:40 | 2:00(4:00) | 22:40 | 23:24 | 2:44 | × | |||
445 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 16:10 | 2:00(4:00) | 18:10 | 18:37 | 2:27 | △ | |||
444 | × | 全体的・基本・簡潔のRPG | プログラムの整頓 もし時間内に終わらない場合は:あきらめる | 21:20 | 2:00(4:00) | 23:20 | 23:26 | 2:06 | ◎ | ||
443 | 全体的・基本・簡潔のRPG | プログラムの整頓 もし時間内に終わらない場合は:あきらめる | 23:30 | 2:00(4:00) | 25:30 | 25:37 | 2:07 | ◎ | |||
442 | 全体的・基本・簡潔のRPG | プログラムの整頓 もし時間内に終わらない場合は:あきらめる | 20:30 | 2:00(4:00) | 22:30 | 22:43 | 2:13 | ○ | |||
441 | 全体的・基本・簡潔のRPG | プログラムの整頓 もし時間内に終わらない場合は:あきらめる いつもなら予定終了時刻の時点で「抜け出せない」と感じるとそのまま1時間くらい延長してしまうが、 珍しく、抜け出せた(あきらめることができた) | 22:05 | 1:00(4:00) | 23:05 | 23:15 | 1:10 | ○ | |||
440 | 全体的・基本・簡潔のRPG | プログラムの整頓 もし時間内に終わらない場合は:あきらめる | 19:15 | 1:00(4:00) | 20:15 | 20:20 | 1:05 | ◎ | |||
439 | 全体的・基本・簡潔のRPG | プログラムの整頓 もし時間内に終わらない場合は:あきらめる | 16:15 | 2:00(4:00) | 18:15 | 18:29 | 2:14 | ○ | |||
ちょっと作業: 定期的にコマンドを自動実行する際、そのコマンドライン画面に色を付けて表示する方法を調べていた。1h | |||||||||||
438 | 全体的・基本・簡潔のRPG | プログラムの整頓 もし時間内に終わらない場合は:あきらめる | 22:45 | 1:00(4:00) | 23:45 | 23:58 | 1:13 | ○ | |||
437 | 全体的・基本・簡潔のRPG | プログラムの整頓 もし時間内に終わらない場合は:あきらめる | 19:20 | 2:00(4:00) | 21:20 | 21:25 | 2:05 | ◎ | |||
436 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 17:15 | 1:00(4:00) | 18:15 | 18:24 | 1:09 | ◎ | |||
ちょっと作業: iTunes の評価用の「ものさし」を作り直していた。 この写真だけでは意味が分からないと思いますが…0.5h | |||||||||||
ちょっと作業: ダウンロードした曲の出だしが気に入らなかったので SoundEngine で削除していた。1h | |||||||||||
435 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 23:30 | 2:00(2:00) | 25:30 | 25:38 | 2:08 | ◎ | |||
434 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 23:10 | 1:30(4:00) | 24:40 | 1:04 | 1:54 | △ | |||
433 | 全体的・基本・簡潔のRPG | 戦闘画面作成 もし時間内に終わらない場合は:あきらめる | 18:15 | 1:30(4:00) | 19:45 | 19:50 | 1:35 | ◎ | |||
432 | 全体的・基本・簡潔のRPG | コマンドメニュー作成(99%) もし時間内に終わらない場合は:あきらめる | 22:25 | 1:30(1:30) | 23:55 | 24:01 | 1:36 | ◎ |
この表の意図:
多くの人はパソコンのやりすぎやネットゲームのやりすぎには困っていると思います。
参考に言うと、この表を使う前の私は 1 回の PC 使用時間がノンストップで 17 時間というときもあったし、平均で言うと毎日 9 時間はやっていたと思います。
この表を使ってパソコンの使用時間を 事前に決めて、ネット上に公開 することで、パソコンのやりすぎを防止できたら、と思います。
また、数年前から考えてきましたが、そういう徹夜とか長時間作業をするよりも、昼間の短時間作業のほうが生産性は高いのではないかと思います。そういう意味でも期待しています。
※以前は NO PC WEEK と称してパソコンを使用しない期間を設けることでやりすぎに対処してきましたが、もっと具合の良い方法はないかと考え、この表を使うようになりました。
記入の法則:
ちなみに、分単位で記録を取ったりして、だいぶマメに見えるかもしれませんが、Windows の日本語入力(MS-IME)で「いま」と入力し、 変換 キーを押さずに ↑ ボタンを押すと現在の時刻になります。道具の便利さが人をマメに見せるのかもしれません。
例外事項:
「スーパーPC WEEK」:
連休中(3連休以上)に、NO PC WEEK をオフにして好きなだけパソコンを使ってよいとする期間を、「NO PC WEEK」に対して「スーパーPC WEEK」と言う。
ただし以下の決まりを守ること。
なお、表の中央やや右寄りの「C. 予定 使用時間(当日限度)」列の "当日限度" には UNLOCK と記入する。
中途結果:
結構いい結果になっています。炊事や掃除、散歩、早起きなどが好ましいリズムでできるようになりました。
(2020年9月6日追記:散歩、早起きは最近あまりできていません。掃除や炊事は理想的にできています)
また、パソコン以外の趣味も進むようになりました。電子回路、ガンプラ、RPG のプログラム以外のモンスターイラストやストーリーなど RPG の肉付け部分の創作、勉強、昔好きだったペーパークラフト等々。
そしてパソコンの趣味自体も深夜遅くまで行うよりも質が高くなったように感じます。制限された短い時間の中で結果を得ようとするので、取捨選択が行われているし、時間が終了して、空いた時間ができ、それがほどよい休憩になり、今後の作業の方針を落ち着いて検討することもできます。それが質につながっているのかなと思います。
この取り組みが、15 才 ~ 18 才くらいまでの高専(中退)に所属していた時に実施できていたら良かっただろうなと思います。でもそれくらいの年齢では経験が浅く、このような効果的なルール作りを行うことはできなかったと思います。自分は人に比べて「創作意欲」や「ゲームで遊ぶ欲望」におぼれやすいところがあり、そのコントロールはとても難しいです。
自分の家族にすすめたい方へ:
パソコンのやりすぎやネットゲームのやりすぎは社会問題にもなっているので、「うちの子についてなんとかしないと…」と思っているご家族の方は多くいらっしゃると思います。
私の両親も過去に私について問題にしていました。学校へ行かず、毎日朝までパソコンに向かい、悶々としていたんです。
この表はその家族が困っていたときから 30 年後に、私が自分で必要を感じて作ったものです。
私は今 一人暮らしをしていて、自分で生計を立てる中、パソコンにおぼれた生活をすると、生活がうまく回らなくなるんです。
具体的には、
これらを改善するために表を作りました。
でも、このような必要にせまられて「自分の動機で始めた場合」と、「人からすすめられて始めた場合」とでは、結果が異なると思います。
自分の切実な動機で始めたなら自分から進んでこの表を活用すると思いますが、外から押し付けられたものはなかなか定着しないものです。
あまり適当なことは言えませんが、「中途結果」タブの中の青い部分で書いたことは、本人にとって得になることなので、「ときどき休憩して、他のあの趣味やってみたらどうだ?」とか「ときどき休憩したほうがプログラミングの質が上がるって話だぞ?」という形ですすめてみたらどうでしょうか。(それでも最終的には自立してもらうことは必要だと思いますが)
私が両親を困らせていたときに、突然、外へ一人で出て行って、一人暮らしを始めたり、接客業を始めたり、いくつか資格取得したりといろいろ行えた理由というのは、正直言ってわかりません。(※しかし途中で失業して2度、実家に戻ったことがあります。1 回目は 21 才くらいのときに 5 年間、2 回目は 35 才くらいのときに1年未満、実家にいて、何もしてなかったり働いたりしていました)
私が両親を困らせていたのは 16 才 ~ 20 才くらいの学生のころですが、そのころ家族と私自身と友人たちがみんなそれぞれ、私の生活について心配したり困ったり悩んだり、あの手この手を試したりしていました。そういう煮詰まったような状況が運命をそのように(解決の方向へ)動かすのかもしれません。運命がどうの というのは変ですが、そのくらいのことしか言えません。何かしら取り組む必要があるということですかね。
この社会問題はクリアーすべきものみたいです。
部屋に閉じこもらずに、散歩に行く取り組み:
右端の写真は散歩中に撮影した写真です。でも面白い写真ではありません。
4連休のさんぽ:
7月22日(木) | 良いと思った☆ | しげみ から のぞく海 |
7月23日(金) | 良いと思った☆ | くもりの砂浜 |
7月24日(土) | 良いと思った☆ | はれの砂浜 |
7月25日(日) | 良いと思った☆ | はれの砂浜2 |
お盆休みのさんぽ:
表の星々の装飾は CSS を使いました。昔(30年前)同じような装飾を何かで(Pascal 言語で)行っていたら、女の子から「どうやるの?」と聞かれたことがあります。
だからこの星々の装飾についても女の子の目にとまり、どうやるのか知りたがるんじゃないかなぁと思います。
昔(30年前)は、一言では説明できない内容(画像のビットを XOR や AND など論理演算で合成するという内容)だったので説明できませんでしたが、今回の星々も、一言では説明できません。
(私は女の子とペラペラとしゃべれる人ではないのでそういう意味でも説明できません)
CSS の内容はこれです(リンクはスクリーンショット画像です)
この画像中の CSS の .decoTable というクラスを <table class="decoTable"> のように表のタグに指定するとその表は星々の画像で飾られます。
上記の「これ」のリンクは画像で不親切だし、上行の一言があってもわからないと思うので、サンプルを作りました → stars.zip (クリックするとダウンロード)
(Windows の場合ですが)この zip ファイルをダウンロードしたら右クリックして「すべて展開...」して、中身の stars.html をダブルクリックすれば、自分のパソコンで星々の表を表示できます。
stars.html を右クリックして、「プログラムから開く」>「メモ帳」とすれば、内容を表示して編集できます。
内容について詳しく説明はできませんが、stars.html 中の、
.decoTable td {..} と書いている部分は主に背景画像の これについて設定していて、
.decoTable ... td:after {..} と書いている部分は星々画像 について設定しています。
難しいところがいくつかあって、そのうちの1つは、
『.decoTable ... td:after {..} の position を absolute にしたとき、その上位の td タグの position を relative にすれば、.decoTable ... td:after {..} の位置の基準(原点0,0)は td となる』
というようなことをやっていて、これは CSS について勉強しないと理解は難しいです。
他に難しいのは、
かな?
難しいですが、がんばりすぎると身体を壊すのでほどほどに…。